feat: asset-quality gate + remodel modular-kit-snap and lightmap-uv-channel assets#117
Merged
Conversation
'Designed, not placeholder' becomes a measured gate: three floors in examples/gallery_asset_quality.py (naming, material variation scoped to assembled heroes, right-angle edge fraction <= 0.75), a pinned reference bar (CLAUDE.md canonical membership: collision-hull-proxy, custom-normals-shade, vertex-weight-limit, lod-decimate-chain), and the asset sheet (hero alone, neutral 3/4 studio, composited beside the reference set, committed under docs/gallery/asset-sheets/). Floors calibrated empirically against the gallery's best and weakest; three candidates dropped with evidence: part count (vertex-weight-limit's skinned mech arm is one mesh and reference-quality), silhouette compactness (soccer-ball-goldberg 10.0, bmesh-gear 18.3 are good simple subjects), dominant-material share (jerry can and rocket carry accents in per-face assignment, both measure 1.0). Floor falsification: raw cube and single-material assembly exit 11, designed restore exits 0. Goodhart warning written into VISUAL-STYLE: greebles for the metric's sake do not count. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
The shipped cart read as placeholder: uniform tan (its DarkWood wheel material was silently never applied - a prefix lookup bug, replaced with exact per-part mapping), wheels as lumpy polygons with a black dot for a hub, no fittings. Rebuilt as an assembly of 21 named watertight parts: plank-grooved bed with side rails, corner brackets, and fasteners, real wheel assemblies (disc + hub + iron band + bolt ring) on a capped axle, and a ribbed canvas canopy. Atlas board enlarged for card-scale legibility. Render path now gates through gallery_asset_quality (exit 11): 5 materials, edge90 0.069, naming clean. Closed forms moved deliberately, contracts unchanged: parts 9 -> 21, islands 1114 -> 3680 (byte-identical on 5.1.2 and 4.5.11; the MeshUVLoopLayer re-fetch ordering that avoids the documented 4.5.11 segfault is preserved and verified). Re-falsified: clobber drift 2.068, overlap 15 SAT hits, margin collapse 2e-5. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
Three defects fixed: flat grey wall panels are now assemblies (backing plate + inset panel + four bolt heads each), the palette shifted teal-slate so the card no longer twins with lightmap-uv-channel's warm cart, and mean luminance was brought into the calibration range (82.7 -> 66.1, ceiling 77.7) by dimming fixtures/spill/rim - the interior run no longer reads as a fourth over-bright card, so only the documented framing deviation remains. Detail parts 12 -> 20 (hygiene 13 -> 21), boundary contract untouched (16 verts/edges, probes still exit 3/4 with measured errors), materials now cached per design key instead of duplicated per part per segment. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
…rated pages ROADMAP carries the full-gallery floor survey: 26 of 42 pass; the 14 below-floor entries are all contract-vehicle/display subjects with measured numbers, none a game asset, none a remodeling mandate. Asset sheets for both remodeled examples committed under docs/gallery/asset-sheets/ (before/after beside the reference set). Staging contact sheets refreshed for both heroes. gallery.json, blender-smoke comments, and generated gallery pages updated for the moved closed forms (21 parts/3680 islands; 20 detail/21 hygiene parts). Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Codifies "modeled with intent" as a measured gate, then applies it to the two examples that exposed the gap (
modular-kit-snap,lightmap-uv-channel— both passed every existing gate and still shipped placeholder-reading assets). Four commits: the gate, two remodels, integration.The floors (calibrated empirically, measurements reported)
Implemented in
examples/gallery_asset_quality.py(render path only, same call pattern asgallery_framing, exit 11, never in check-only paths):bmesh-gear's honest machined teeth 0.667, raw boxes 1.0.Calibration table (measured on Blender 5.1.2 via the survey harness):
Dropped floors, with evidence (a floor that can't be set without failing a genuinely good asset is not a floor; a floor hand-tuned to pass everything isn't one either):
vertex-weight-limit's mech arm is a single skinned mesh and reference-quality.soccer-ball-goldberg10.0,bmesh-gear18.3,turntable19.1 are good simple subjects. Kept as printed information only.Floor falsification (
blender --background): raw default-named cube → exit 11 (naming + edge90); two-part single-material assembly → exit 11 (materials + edge90); designed restore → exit 0. Watched fail and pass.Goodhart warning written into
docs/VISUAL-STYLE.md: greebles for the metric's sake do not count; detail must serve plausibility.Reference bar + asset sheet gate
Reference set pinned in CLAUDE.md (canonical):
collision-hull-proxy,custom-normals-shade,vertex-weight-limit,lod-decimate-chain. Asset sheet: hero alone, neutral 3/4 studio, composited beside the reference set, committed:docs/gallery/asset-sheets/lightmap-uv-channel.webpdocs/gallery/asset-sheets/modular-kit-snap.webpBoth sheets are [before, after, chp, cns, vwl, lod] with the befores re-rendered from the pre-remodel code in the same neutral rig. Verdicts: both pass — neither remodeled asset is identifiable as the least-designed in the lineup; both befores clearly were.
lightmap-uv-channel remodel
Found and fixed: the wheel
DarkWoodmaterial was silently never applied (prefix lookup bug — exact per-part mapping now). Rebuilt as 21 named watertight parts: plank-grooved bed + side rails + corner brackets + fasteners, real wheel assemblies (disc + hub + iron band + bolt ring) on a capped axle, ribbed canvas canopy, enlarged atlas board. Closed forms moved deliberately (contracts identical): parts 9 → 21, islands 1114 → 3680, byte-identical on 5.1.2 and 4.5.11. Re-falsified: clobber drift 2.068, overlap 15 SAT hits, margin collapse 2e-5. TheMeshUVLoopLayerre-fetch ordering that avoids the documented 4.5.11 segfault is preserved and verified on 4.5.11 (no EXCEPTION_ACCESS_VIOLATION; hazard note still accurate).modular-kit-snap remodel
Panels → assemblies (backing plate + inset + 4 bolt heads); palette teal-slate (no longer twins the cart); luminance 82.7 → 66.1 (calibration ceiling 77.7) — no longer a fourth over-bright card, so only the documented framing deviation (interior run) remains. Detail parts 12 → 20, hygiene 13 → 21; boundary contract untouched (16 verts/edges, probes exit 3/4 with measured 3 mm/2 mm errors).
Survey worklist (in ROADMAP)
Full 42-example survey: 26 pass, 14 below floors, 2 non-mesh subjects (n/a). Every below-floor entry is a contract-vehicle/display subject (testcard TV, VSE monitors, text bars, display rigs, honest single primitives) with measured numbers — none a game asset, none a remodeling mandate. Worklist committed in ROADMAP.
Visual passes (iteration log)
bm.verts[n0:]slicing — bolts fanned outward, found by extents probe, fixed with set-difference; bed/iron material tuning) + falsify render + 4.5.11 parity.Test plan (exact binaries)
E:\Blender-Developer-Tools\.scratch\blender-5.1.2-windows-x64\blender.exe(Blender 5.1.2): all checks, probes, renders, surveys, floor falsification, asset sheets.E:\Blender-Developer-Tools\.scratch\blender-4.5.11-windows-x64\blender.exe(Blender 4.5.11 LTS): both check-only paths (byte-identical outputs), both render parity passes, hazard-ordering verification.Live run vs inspection-only
Live run: everything above. Inspection only: the 4.5 series smoke on CI runs 4.5.12 (local binary is 4.5.11 — stated exactly), Cycles engine paths (renders used EEVEE), Firefox/Safari rendering (Chromium only).